﻿using System.Windows.Forms;
using MultipleChoice_ExamGenerator.multiplechoicedbDataSetTableAdapters;
using MySql.Data.MySqlClient;

namespace MultipleChoice_ExamGenerator.DB
{
    /// <summary>
    /// Σε αυτή την κλάση βρίσκονται οι μέθοδοι που σχετίζονται με
    /// την βάση
    /// </summary>
    internal class DbQueries
    {
        /// <summary>
        /// Αυτή η μέθοδος ελέγχει αν το Username που έχει επιλέξει ο χρήστης
        /// είναι διαθέσιμο.
        /// </summary>
        /// <param name="username">Το Username που επέλεξε ο χρήστης</param>
        /// <returns>true/false</returns>
        public static bool IsUsernameValid(string username)
        {
            try
            {
                var authorsAdapter = new authorsTableAdapter();
                var id = authorsAdapter.FindAuthorIDByUsername(username);
                return id == null;
            }
            catch (MySqlException ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
        }

        /// <summary>
        /// Αυτή η μέθοδος ψάχνει στην βάση για το αν υπάρχει χρήστης με τα
        /// συγκεκριμένα username/password και αν υπάρχει επιστρέφει το ID του.
        /// </summary>
        /// <param name="username">Το όνομα χρήστη που έδωσε ο χρήστης</param>
        /// <param name="password">Ο κωδικός που έδωσε ο χρήστης</param>
        /// <returns>έναν αριθμό > 0 αν υπάρχει ο χρήστης (Το ID του)
        /// και 0 αν δεν υπάρχει ο χρήστης και -1 αν προκλήθηκε κάποιο Exception
        /// </returns>
        public static int AuthenticateAuthor(string username, string password)
        {
            try
            {
                var authorsAdapter = new authorsTableAdapter();
                int id;
                int.TryParse(authorsAdapter.AuthenticateAuthor(username, password).ToString(), out id);

                return id;
            }
            catch (MySqlException mySqlException)
            {
                MessageBox.Show(mySqlException.Message,
                    "Error!",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
                return -1;
            }
        }
    }
}

